
cmake_minimum_required(VERSION 3.4)

project(G4Extension VERSION 1.0)

find_package(Geant4 REQUIRED ui_all vis_all)

include(${Geant4_USE_FILE})

# 添加库文件的路径，告知gcc编译器可以在这个目录下查找头文件
include_directories(${PROJECT_SOURCE_DIR}/inc)


file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
file(GLOB headers ${PROJECT_SOURCE_DIR}/inc/*.hh)

add_executable(G4Extension G4Extension.cc ${sources} ${headers})

# 把Geant4的用户要用到的头文件连接到可自行文件里来。
target_link_libraries(G4Extension ${Geant4_LIBRARIES})

set(EXAMPLEB1_SCRIPTS
  auto.mac
  vis.mac
)

foreach(_script ${EXAMPLEB1_SCRIPTS})
  configure_file(
    ${PROJECT_SOURCE_DIR}/${_script}
    ${PROJECT_BINARY_DIR}/${_script}
    COPYONLY
    )
endforeach()

install(TARGETS G4Extension DESTINATION bin)

# Geant4官方，为了能让B1例程更方便的集成到别的地方，还做了一点巧妙的设计。
# 引入了add_custom_target命令，在 Geant4 中，add_custom_target() 命令是 CMake 中用于创建自定义构建目标的命令。
# 该命令创建一个自定义的构建目标 B1，它依赖于 exampleB1 目标。执行 B1 构建目标时，将自动构建 exampleB1 目标，从而生成所需的输出文件。

# 这种方式允许用户使用简单的 make 命令来构建所需的目标，而无需显式指定每个目标。
# 此外，通过将 B1 构建目标与依赖的目标 exampleB1 分开，用户可以更容易地将其与其他构建目标（例如测试）集成在一起。
add_custom_target(B1 DEPENDS G4Extension)

